From 8cf49d7c10a6ed382aeea15e8202a0da0fbe3ad6 Mon Sep 17 00:00:00 2001 From: Elliot Lee Date: Tue, 21 Jul 1998 18:49:53 +0000 Subject: [PATCH] genmarshal.pl: Handle complex types, and functions with a return value but genmarshal.pl: Handle complex types, and functions with a return value but no parameters. genmarshal.pl gtkmarshal.* gtkwidget.c: Remove support for GDK_EVENT and STYLE parameter types. --- gtk/genmarshal.pl | 52 +++++++++++++++++++++++++++++---- gtk/gtkmarshal.c | 32 ++++++++++---------- gtk/gtkmarshal.h | 12 +++----- gtk/gtkmarshal.list | 2 -- gtk/gtkmarshalers.list | 2 -- gtk/gtkwidget.c | 66 +++++++++++++++++++++--------------------- 6 files changed, 100 insertions(+), 66 deletions(-) diff --git a/gtk/genmarshal.pl b/gtk/genmarshal.pl index 9fd2491e46..23c0e4a942 100755 --- a/gtk/genmarshal.pl +++ b/gtk/genmarshal.pl @@ -9,10 +9,16 @@ "DOUBLE"=>"gdouble", "STRING"=>"gpointer", "ENUM"=>"gint", "FLAGS"=>"gint", "BOXED"=>"gpointer", "FOREIGN"=>"gpointer", - "C_CALLBACK"=>"C_CALLBACK", "POINTER"=>"gpointer", - "ARGS"=>"gpointer", "SIGNAL"=>"gpointer", + "POINTER"=>"gpointer", "OBJECT"=>"gpointer", - "STYLE"=>"gpointer", "GDK_EVENT"=>"gpointer"); + +# complex types. These need special handling. + "FOREIGN"=>"FOREIGN", + "C_CALLBACK"=>"C_CALLBACK", + "SIGNAL"=>"SIGNAL", + "ARGS"=>"ARGS", + "CALLBACK"=>"CALLBACK" + ); $srcdir = $ENV{'srcdir'} || '.'; @@ -100,7 +106,25 @@ EOT for (@params) { if($_ eq "C_CALLBACK") { print OS "gpointer arg".$argn."a,\n"; - print OS "gpointer arg".$argn++."b,\n"; + print OS "gpointer arg".$argn."b,\n"; + $argn++; + } elsif($_ eq "SIGNAL") { + print OS "gpointer arg".$argn."a,\n"; + print OS "gpointer arg".$argn."b,\n"; + $argn++; + } elsif($_ eq "ARGS") { + print OS "gpointer arg".$argn."a,\n"; + print OS "gpointer arg".$argn."b,\n"; + $argn++; + } elsif($_ eq "CALLBACK") { + print OS "gpointer arg".$argn."a,\n"; + print OS "gpointer arg".$argn."b,\n"; + print OS "gpointer arg".$argn."c,\n"; + $argn++; + } elsif($_ eq "FOREIGN") { + print OS "gpointer arg".$argn."a,\n"; + print OS "gpointer arg".$argn."b,\n"; + $argn++; } else { print OS "$trans{$_} arg".$argn++.",\n" unless $_ eq "NONE"; } @@ -118,7 +142,9 @@ EOT if($retval ne "NONE") { print OS " $trans{$retval} *return_val;\n"; - print OS " return_val = GTK_RETLOC_$retval (args[".(scalar @params)."]);\n"; + $retn = 0; + $retn = scalar @params unless $params[0] eq "NONE"; + print OS " return_val = GTK_RETLOC_$retval (args[$retn]);\n"; } print OS " rfunc = (GtkSignal_$funcname) func;\n"; print OS " *return_val = " unless $retval eq "NONE"; @@ -129,6 +155,22 @@ EOT print OS <type, GTK_SIGNAL_OFFSET (GtkWidgetClass, style_set), - gtk_marshal_NONE__STYLE, + gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_STYLE); widget_signals[ADD_ACCELERATOR] = @@ -385,7 +385,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[BUTTON_PRESS_EVENT] = @@ -393,7 +393,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, button_press_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[BUTTON_RELEASE_EVENT] = @@ -401,7 +401,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, button_release_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[MOTION_NOTIFY_EVENT] = @@ -409,7 +409,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, motion_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DELETE_EVENT] = @@ -417,7 +417,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, delete_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DESTROY_EVENT] = @@ -425,7 +425,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, destroy_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[EXPOSE_EVENT] = @@ -433,7 +433,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, expose_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[KEY_PRESS_EVENT] = @@ -441,7 +441,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, key_press_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[KEY_RELEASE_EVENT] = @@ -449,7 +449,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, key_release_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[ENTER_NOTIFY_EVENT] = @@ -457,7 +457,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, enter_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[LEAVE_NOTIFY_EVENT] = @@ -465,7 +465,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, leave_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[CONFIGURE_EVENT] = @@ -473,7 +473,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, configure_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[FOCUS_IN_EVENT] = @@ -481,7 +481,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_in_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[FOCUS_OUT_EVENT] = @@ -489,7 +489,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_out_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[MAP_EVENT] = @@ -497,7 +497,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, map_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[UNMAP_EVENT] = @@ -505,7 +505,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, unmap_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[PROPERTY_NOTIFY_EVENT] = @@ -513,7 +513,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, property_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[SELECTION_CLEAR_EVENT] = @@ -521,7 +521,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_clear_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[SELECTION_REQUEST_EVENT] = @@ -529,7 +529,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_request_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[SELECTION_NOTIFY_EVENT] = @@ -537,7 +537,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[SELECTION_RECEIVED] = @@ -553,7 +553,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_in_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[PROXIMITY_OUT_EVENT] = @@ -561,7 +561,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_out_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DRAG_BEGIN_EVENT] = @@ -569,7 +569,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_begin_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DRAG_REQUEST_EVENT] = @@ -577,7 +577,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_request_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DRAG_END_EVENT] = @@ -585,7 +585,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_end_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DROP_ENTER_EVENT] = @@ -593,7 +593,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drop_enter_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DROP_LEAVE_EVENT] = @@ -601,7 +601,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drop_leave_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DROP_DATA_AVAILABLE_EVENT] = @@ -610,7 +610,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, drop_data_available_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[VISIBILITY_NOTIFY_EVENT] = @@ -618,7 +618,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, visibility_notify_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[CLIENT_EVENT] = @@ -626,7 +626,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, client_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[NO_EXPOSE_EVENT] = @@ -634,7 +634,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, no_expose_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[OTHER_EVENT] = @@ -642,7 +642,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkWidgetClass, other_event), - gtk_marshal_BOOL__GDK_EVENT, + gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_GDK_EVENT); widget_signals[DEBUG_MSG] = -- 2.30.2